/**
 * 该文件的主要用于：
 * 1.定义：actions,mutationd,state
 * 2.创建一个Vuex中最核心的部分---store
 * 3.且store要管理：actions, mutations,state
*/
import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'
Vue.use(Vuex)

//定义一个actions 
const actions ={
    // jia(miniStore,value){
    //     console.log('actions中的jia函数被调用了',miniStore,value)
    //     miniStore.commit('JIA',value)
    // },
    // jian(miniStore,value){
    //     console.log('actions中的jian函数被调用了',miniStore,value)
    //     miniStore.commit('JIAN',value)
    // }
    jiaOdd(miniStore,value){
        if(miniStore.state.sum % 2 ){
            miniStore.commit('JIA',value)
        }
    },
    jiaWait(miniStore,value){
        setTimeout(()=>{
            miniStore.commit('JIA',value)
        },500)
    },
    jiaServer(miniStore){
        axios.get('https://api.uixsj.cn/hitokoto/get?type=soup').then(
            response =>{
             console.log(response.data) 
             miniStore.commit('JIA',response.data.length)  
            },
            error =>{
                alert(error)
            })
    }
}
//定义一个mutations
const mutations = {
	JIA(state,value){
		console.log('mutations中的JIA被调用了',state,value)
		state.sum += value
	},
	JIAN(state,value){
		console.log('mutations中的JIAN被调用了',state,value)
		state.sum -= value
	}
}
//定义一个state 
const state = {
	sum:0,
    description:'一个简单的求和组件，只能加和减'
}
//如果vuex中的数据，要经过一些处理，才能展示到页面上，那就用getter尽行处理
//也可以自己在组件中通过：计算属性，自定义指令等等去处理
 const getters = {
     bigSum(state){
         return state.sum *10
     },
     shortDescription(state){
        return state.description.slice(0,3)
     }
 }
//创建并暴露一个store 并且管理：actions,mutations,state
export default new Vuex.Store({
    actions,
    mutations,
    state,
    getters
})